/**
 * Author: Daniel Michalski
 * Date: 05.03.13
 */

public class ThreadGroupDemo {
    public static void main(String[] args) {
        ThreadGroup grupaA = new ThreadGroup("Grupa A");
        ThreadGroup grupaB = new ThreadGroup("Grupa B");

        NewThread ob1 = new NewThread("Jeden", grupaA);
        NewThread ob2 = new NewThread("Dwa", grupaA);
        NewThread ob3 = new NewThread("Trzy", grupaB);
        NewThread ob4 = new NewThread("Cztery", grupaB);

        System.out.println("Oto wynik działania list():");
        grupaA.list();
        grupaB.list();
        System.out.println();

        System.out.println("Zawieszenie grupy A");
        Thread[] tga = new Thread[grupaA.activeCount()];
        grupaA.enumerate(tga);
        for (int i = 0; i < tga.length; i++) {
            ((NewThread)tga[i]).mySuspend();
        }

        try {
            Thread.sleep(4000);
        } catch (InterruptedException ex) {
            System.out.println("Przerwano główny wątek");
        }

        System.out.println("Wznowienie grupy A");
        for (int i = 0; i < tga.length; i++) {
            ((NewThread)tga[i]).myResume();
        }

        System.out.println("Oczekiwanie na zakończenie wątków.");
        try {
            ob1.join();
            ob2.join();
            ob3.join();
            ob4.join();
        } catch (InterruptedException e) {
            System.out.println("Wyjątek w głównym wątku");
        }
        System.out.println("Zakończenie wątku głównego");
    }
}
